A large enterprise application comprises of a number of interacting software artifacts which tend to have a high degree of cohesion. This interaction could be at different layers depending on the technical implementation architecture. Two cases of typical architectures which are used currently include client server and multi-tier architecture.
In a client-server architecture, the interaction can be at either the client layer or at the server layer. The server is typically a relational database system holding persistent data and the client will typically be a graphical user interface (GUI) interface implemented in Visual Basic/VC++/Java™. In case of the multi-tier technical architecture, the interactions could be at the following layers: presentation layer, services layer, methods layer, and database layer.
This leads to a large number of side effects when certain software artifacts have been modified. These need to be studied for the impact of changes. For example, if a control is added to a user interface it will lead to a change in the interface of a service. This will trigger changes in one or more methods having to change their interface signature. If these methods and services were reused in other places, the changes to the interfaces can lead to inconsistency. If such a study of impact is needed, information about the interactions of the software artifacts comprising of the enterprise application is generally needed. It is extremely unlikely that the software systems are developed with such an interaction mechanism being available as part of the development. This makes it difficult to completely study the impact of changes and be dependant on unstructured information for making such decisions.